﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Generic.Contract;

namespace Contract.Business.Entity
{
    //Criado por : Gustavo
    public class BEFuncionario : BEGeneric
    {
        #region Atributos
        private string _Nome;
        private string _Bairro;
        private string _Cidade;
        private string _CEP;
        private string _UF;
        private string _Telefone;
        private string _Celular;
        private bool _Administrador;
        private BEFuncao _Funcao;
        private int _CodigoFuncao;
        private string _Login;
        private string _Senha;
        private bool _Bloqueado;

        #endregion

        #region Propriedades
        public string Nome
        {
            get
            {
                return this._Nome;
            }
            set
            {
                if (this._Nome != value)
                {
                    this.SendPropertyChanging();
                    this._Nome = value;
                    this.SendPropertyChanged("Nome");
                }
            }
        }

        public string Bairro
        {
            get
            {
                return this._Bairro;
            }
            set
            {
                if (this._Bairro != value)
                {
                    this.SendPropertyChanging();
                    this._Bairro = value;
                    this.SendPropertyChanged("Bairro");
                }
            }
        }

        public string Cidade
        {
            get
            {
                return this._Cidade;
            }
            set
            {
                if (this._Cidade != value)
                {
                    this.SendPropertyChanging();
                    this._Cidade = value;
                    this.SendPropertyChanged("Cidade");
                }
            }
        }

        public string CEP
        {
            get
            {
                return this._CEP;
            }
            set
            {
                if (this._CEP != value)
                {
                    this.SendPropertyChanging();
                    this._CEP = value;
                    this.SendPropertyChanged("CEP");
                }
            }
        }

        public string UF
        {
            get
            {
                return this._UF;
            }
            set
            {
                if (this._UF != value)
                {
                    this.SendPropertyChanging();
                    this._UF = value;
                    this.SendPropertyChanged("UF");
                }
            }
        }

        public string Telefone
        {
            get
            {
                return this._Telefone;
            }
            set
            {
                if (this._Telefone != value.Replace(" ",""))
                {
                    this.SendPropertyChanging();
                    this._Telefone = value.Replace(" ", "");
                    this.SendPropertyChanged("Telefone");
                }
            }
        }

        public string Celular
        {
            get
            {
                return this._Celular;
            }
            set
            {
                if (this._Celular != value.Replace(" ", ""))
                {
                    this.SendPropertyChanging();
                    this._Celular = value.Replace(" ", "");
                    this.SendPropertyChanged("Celular");
                }
            }
        }

        public bool Administrador
        {
            get
            {
                return this._Administrador;
            }
            set
            {
                if (this._Administrador != value)
                {
                    this.SendPropertyChanging();
                    this._Administrador = value;
                    this.SendPropertyChanged("Administrador");
                }
            }
        }

        public BEFuncao Funcao
        {
            get
            {
                return this._Funcao;
            }
            set
            {
                BEFuncao previousValue = this._Funcao;
                if ((previousValue == null) || (!previousValue.Equals(value)))
                {
                    this.SendPropertyChanging();
                    this._Funcao = value;
                    if (value != null)
                    {
                        this._CodigoFuncao = value.Codigo;
                    }
                    else
                    {
                        this._CodigoFuncao = default(int);
                    }
                    this.SendPropertyChanged("Funcao");
                }
            }
        }

        public int CodigoFuncao
        {
            get
            {
                return this._CodigoFuncao;
            }
            set
            {
                if (this._CodigoFuncao != value)
                {
                    this.SendPropertyChanging();
                    this._CodigoFuncao = value;
                    this.SendPropertyChanged("CodigoFuncao");
                }
            }
        }

        public string Login
        {
            get
            {
                return this._Login;
            }
            set
            {
                if (this._Login != value)
                {
                    this.SendPropertyChanging();
                    this._Login = value;
                    this.SendPropertyChanged("Login");
                }
            }
        }

        public string Senha
        {
            get
            {
                return this._Senha;
            }
            set
            {
                if (this._Senha != value)
                {
                    this.SendPropertyChanging();
                    this._Senha = value;
                    this.SendPropertyChanged("Senha");
                }
            }
        }

        public bool Bloqueado
        {
            get
            {
                return this._Bloqueado;
            }
            set
            {
                if (this._Bloqueado != value)
                {
                    this.SendPropertyChanging();
                    this._Bloqueado = value;
                    this.SendPropertyChanged("Bloqueado");
                }
            }
        }
        #endregion

        #region Métodos Override
        public override string ToString()
        {
            return this.Nome;
        }
        #endregion
    }
}
